package db.entity;

import java.util.Hashtable;
import java.util.ArrayList;

import db.BaseDAO;
import db.DAOFactory;
import db.TransformInterface;

import model.Activity;
import model.Line;
import model.User;
import model.relation.LineSpots;

/**
 * 
 * Description: 对旅游路线数据进行处理的DAO。
 * 
 * @since  2009/2/23
 * @author ashen
 * 
 */
public class LineDAO extends BaseDAO implements TransformInterface<Line>{
	
	public LineDAO(){
		setTableName("mapscheme.line");
	}
	
	/**
	 * the method delete of class LineDAO
	 * 
	 * 该方法删除指定ID的旅游线路
	 * 
	 * @param id 需要删除的旅游线路的ID
	 */
	public void delete(int id){
		delete("id",id);
	}

	/**
	 * the method findById of class LineDAO
	 * 
	 * 该方法通过指定旅游线路ID查找旅游线路
	 * 
	 * @param id 旅游线路ID
	 * @return 查询到的旅游线路
	 */
	public Line findById(int id){	        		 	        
        return findByPK("id",id);
	}
	
	/**
	 * the method findByName of class LineDAO
	 * 
	 * 该方法通过指定旅游线路名称查找旅游线路
	 * 
	 * @param name 旅游线路名称
	 * @return 查询到的旅游线路列表
	 */
	public ArrayList<Line> findByName(String name){	        		 	        
        return findByProperty("name",name);
	}
	
	/**
	 * the method findByUserId of class LineDAO
	 * 
	 * 该方法通过指定旅游线路创建者的ID查找旅游线路
	 * 
	 * @param name 旅游线路创建者的ID
	 * @return 查询到的旅游线路列表
	 */
	public ArrayList<Line> findByUserId(int userId){	        		 	        
        return findByProperty("userId", userId);
	}
	
	/**
	 * the method findByKeyword of class LineDAO
	 * 
	 * 该方法通过指定旅游路线关键字查找旅游路线
	 * 
	 * @param name 旅游路线名称
	 * @return 查询到的旅游路线列表
	 */
	public ArrayList<Line> findByKeyword(String name,String description){	        		
		return findByKeyword("name", name, "description", description);
	}
	
	/**
	 * the method hashtable2Object of class LineDAO
	 * 
	 * 该方法将Hashtable类型的对象转换为Line的对象，并返回Line的对象.
	 * 
	 * @param hashtable 存储了一个景点信息的Hashtable类型的对象
	 * @return Line的对象.
	 */
	public Line hashtable2Object(Hashtable hashtable){
		User user=null;
		Line line=new Line();
		int id=Integer.parseInt((String)hashtable.get("ID"));
		line.setId(id);
		line.setName((String)hashtable.get("NAME"));			
		if(!((String)hashtable.get("DESCRIPTION")).equals("null"))
			line.setDescription((String)hashtable.get("DESCRIPTION"));
		ArrayList<LineSpots> tempList=DAOFactory.getLPSetDAO().findByLineId(id);
		line.setPoints(Set2Object.lpsetToPoints(tempList));
		id=Integer.parseInt((String)hashtable.get("USERID"));
		user=DAOFactory.getUserDAO().findById(id);
		line.setUser(user);
		return line;
	}
	
	
}